本章节主要包括配置kibana的会话安全和加密通信两项内容。
配置xpack.security.encryptionKey属性
用于加密cookie中的凭据的任意字符串,长度不超过32个字符。 至关重要的是,这个密钥不会暴露给Kibana的用户。 默认情况下,会在内存中自动生成一个值。 如果使用该默认行为,则在Kibana重新启动时,所有会话都将失效。
设置会话超时时间为30min。
在kibana.yml配置文件中:
1 | xpack.security.encryptionKey: "something_at_least_32_characters" |
配置kibana使用https访问es服务
在节点1上es家目录下,为kibana服务制作数字证书:
1 | ./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 --name es-node1 --ip 10.20.0.11 --pem |
将得到的证书文件存放到kibana部署路径的配置文件目录下certs子目录中:
1 | [elastic@es-node1 certs]$ pwd |
在kibana.yml文件中为kibana配置ssl的相关参数
1 | server.ssl.enabled: true |
此时,启动kibana服务,验证通过 https://10.20.0.11:5601 是否可以成功访问网站。
至此,我们在访问kibana服务时已经实现的加密通信。接下来,继续将kibana访问elasticsearch服务的过程切换到https加密通信。
配置kibana通过https访问elasticsearch
因为我们使用的是自签名证书,所以需要为kibana提供ca证书。
我们先在节点1上,将pkcs12格式的ca证书转换为kibana适用的pem格式,其中cacert.pem是证书公钥文件。
1 | openssl pkcs12 -nocerts -nodes -in elastic-stack-ca.p12 -out private.pem |
在kibana.yml文件中配置elasticsearch.hosts参数,并指定ca证书文件位置::
1 | elasticsearch.hosts: ["https://10.20.0.11:9200"] |
将Kibana配置为通过HTTPS连接到Elasticsearch监控集群,在这里我们使用的是同一个es集群:
1 | xpack.monitoring.elasticsearch.hosts: ["https://10.20.0.11:9200"] |
配置三个节点上的elasticsearch服务,在elasticsearch.yml文件中补充以下http.ssl服务使用的配置参数:
1 | xpack.security.http.ssl.enabled: true |
将http.ssl访问证书时使用的密码信息存储在密钥库中:
1 | bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password |
在前面章节中我们为节点证书设置的密码是:es-node123
三个es节点上均需要设置
重启服务进程并验证配置结果
重启三节点上的es服务进程:bin/elasticsearch
重启节点1上的kibana服务进程:bin/kibana
看到下面这样的日志输出时,可以确认配置成功了:
1 | log [18:46:19.967] [info][listening] Server running at https://es-node1:5601 |